﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Negocio;
using Libreria.SICOM.Modelo;
using System.Configuration;
using Web.SICOM.Models;


namespace Web.SICOM.Controllers
{
    public class RangodeCualidadController : Controller
    {
        //
        // GET: /RangodeCualidad/


        public ActionResult Index()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            RangodeCualidadModelo modelo = new RangodeCualidadModelo();
            
            RangodeCualidadNegocio rangobo= new RangodeCualidadNegocio();
            VariableNegocio varbo = new VariableNegocio();

            modelo.rangosdecualidad = rangobo.consultarRangosdeCualidad(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            modelo.variables = varbo.consultarVariables(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
          

            ViewData.Model = modelo;

            if (((RangodeCualidadModelo)ViewData.Model).rangosdecualidad.Count == 0)
            {
                if (((RangodeCualidadModelo)ViewData.Model).variables.Count == 0)
                {
                    ViewData.Model = "No Hay Datos de variables Asociados";
                }
                ViewData.Model = "No Hay Datos de Rangos de cualidad Asociados";
            }
            return View();
        }

        
        public ActionResult Crear()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
           
            VariableNegocio varbo = new VariableNegocio();
        
            ViewData.Model = varbo.consultarVariables(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            if (((List<Variable>)ViewData.Model).Count == 0)
            {
                ViewData.Model = "No Hay Datos de variables Asociados";
            }

            return View();
        }

       
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Insertar(RangodeCualidad rango)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<RangodeCualidad> rangos = new  RangodeCualidadNegocio().consultarRangosdeCualidad(cdc);
            for (int i = 0; i <= rangos.Count - 1; i++)
            {
                if (rangos[i].Identificador == rango.Identificador)
                {
                    ModelState.AddModelError("Identificador", "***El valor numerico especificado ya existe***");
                }

                if (rangos[i].Identificador == rango.Identificador && rangos[i].Iddevariable==rango.Iddevariable)
                {
                    ModelState.AddModelError("Iddevariable", "***El Rango ya esta asociado con la variable especificada***");
                }
            }
            if (rango.Iddevariable == 0)
            {
                ModelState.AddModelError("Iddevariable", "***La  Variable no ha sido especificada***");
            }
            if (!ModelState.IsValid)
            {
                ViewData.Model =  new VariableNegocio().consultarVariables(cdc);
                return View("Crear", ViewData.Model);
            }
            Int32? id = rango.Identificador;
            Int32? idvariabble = rango.Iddevariable;
            String valor = rango.Valor;
            new RangodeCualidadNegocio().CrearRangodeCualidad(id,idvariabble,valor,cdc);
            return RedirectToAction("Index");
        }
        
       public ActionResult Editar(Int32? id)
       {
           if (Session["Autenticado"] != "True")
           {
               return RedirectToAction("Index", "Inicio");
           }
           RangodeCualidadModelo modelo = new RangodeCualidadModelo();

           RangodeCualidadNegocio rangobo = new RangodeCualidadNegocio();
           VariableNegocio varbo = new VariableNegocio();

           modelo.rangodecualidad = rangobo.ConsultarPorIdentificador(id, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
           modelo.variables = varbo.consultarVariables(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);

           ViewData.Model = modelo;

           return View();
       }
       
       [AcceptVerbs(HttpVerbs.Post)]
       public ActionResult Actualizar(RangodeCualidad rango)
       {
           String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
           List<RangodeCualidad> rangos = new RangodeCualidadNegocio().consultarRangosdeCualidad(cdc);
           for (int i = 0; i <= rangos.Count - 1; i++)
           {
               if (rangos[i].Iddevariable == rango.Iddevariable && rangos[i].Valor == rango.Valor)
               {
                   ModelState.AddModelError("Iddevariable", "***El Rango ya esta asociado con la variable especificada***");
               }
           }
           if (!ModelState.IsValid)
           {
               RangodeCualidadModelo modelo = new RangodeCualidadModelo();
               VariableNegocio varbo = new VariableNegocio();
               modelo.rangodecualidad = rango;
               modelo.variables = varbo.consultarVariables(cdc);
               ViewData.Model = modelo;
               return View("Editar", ViewData.Model);
           }
           Int32? id = rango.Identificador;
           Int32? idvariabble = rango.Iddevariable;
           String valor = rango.Valor;
           new RangodeCualidadNegocio().ActualizarRangodeCualidad(id, idvariabble, valor, cdc);
           return RedirectToAction("Index");
       }


       public ActionResult Eliminar(Int32? id)
       {
           if (Session["Autenticado"] != "True")
           {
               return RedirectToAction("Index", "Inicio");
           }
           new RangodeCualidadNegocio().eliminarRangodeCualidad(id, 0, null, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
           return RedirectToAction("Index");
       }
       

    }
}
